home *** CD-ROM | disk | FTP | other *** search
- package com.sun.xml.parser;
-
- import java.util.Enumeration;
-
- final class SimpleHashtable implements Enumeration {
- private Entry[] table;
- private Entry current;
- private int currentBucket;
- private int count;
- private int threshold;
- private static final float loadFactor = 0.75F;
-
- public SimpleHashtable() {
- this(11);
- }
-
- public SimpleHashtable(int var1) {
- this.current = null;
- this.currentBucket = 0;
- if (var1 < 0) {
- throw new IllegalArgumentException("Illegal Capacity: " + var1);
- } else {
- if (var1 == 0) {
- var1 = 1;
- }
-
- this.table = new Entry[var1];
- this.threshold = (int)((float)var1 * 0.75F);
- }
- }
-
- public void clear() {
- this.count = 0;
- this.currentBucket = 0;
- this.current = null;
-
- for(int var1 = 0; var1 < this.table.length; ++var1) {
- this.table[var1] = null;
- }
-
- }
-
- public Object get(String var1) {
- Entry[] var2 = this.table;
- int var3 = var1.hashCode();
- int var4 = (var3 & Integer.MAX_VALUE) % var2.length;
-
- for(Entry var5 = var2[var4]; var5 != null; var5 = var5.next) {
- if (var5.hash == var3 && var5.key == var1) {
- return var5.value;
- }
- }
-
- return null;
- }
-
- public Object getNonInterned(String var1) {
- Entry[] var2 = this.table;
- int var3 = var1.hashCode();
- int var4 = (var3 & Integer.MAX_VALUE) % var2.length;
-
- for(Entry var5 = var2[var4]; var5 != null; var5 = var5.next) {
- if (var5.hash == var3 && var5.key.equals(var1)) {
- return var5.value;
- }
- }
-
- return null;
- }
-
- public boolean hasMoreElements() {
- if (this.current != null) {
- return true;
- } else {
- while(this.currentBucket < this.table.length) {
- this.current = this.table[this.currentBucket++];
- if (this.current != null) {
- return true;
- }
- }
-
- return false;
- }
- }
-
- public Enumeration keys() {
- this.currentBucket = 0;
- this.current = null;
- return this;
- }
-
- public Object nextElement() {
- if (this.current == null) {
- throw new IllegalStateException();
- } else {
- Object var1 = this.current.key;
- this.current = this.current.next;
- return var1;
- }
- }
-
- public Object put(Object var1, Object var2) {
- if (var2 == null) {
- throw new NullPointerException();
- } else {
- Entry[] var3 = this.table;
- int var4 = var1.hashCode();
- int var5 = (var4 & Integer.MAX_VALUE) % var3.length;
-
- for(Entry var6 = var3[var5]; var6 != null; var6 = var6.next) {
- if (var6.hash == var4 && var6.key == var1) {
- Object var7 = var6.value;
- var6.value = var2;
- return var7;
- }
- }
-
- if (this.count >= this.threshold) {
- this.rehash();
- var3 = this.table;
- var5 = (var4 & Integer.MAX_VALUE) % var3.length;
- }
-
- Entry var8 = new Entry(var4, var1, var2, var3[var5]);
- var3[var5] = var8;
- ++this.count;
- return null;
- }
- }
-
- private void rehash() {
- int var1 = this.table.length;
- Entry[] var2 = this.table;
- int var3 = var1 * 2 + 1;
- Entry[] var4 = new Entry[var3];
- this.threshold = (int)((float)var3 * 0.75F);
- this.table = var4;
- int var5 = var1;
-
- Entry var7;
- int var8;
- while(var5-- > 0) {
- for(Entry var6 = var2[var5]; var6 != null; var4[var8] = var7) {
- var7 = var6;
- var6 = var6.next;
- var8 = (var7.hash & Integer.MAX_VALUE) % var3;
- var7.next = var4[var8];
- }
- }
-
- }
-
- public int size() {
- return this.count;
- }
- }
-